package com.example.mapper;

import com.example.entity.SysPermission;
import com.example.entity.SysRole;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * TODO
 * 角色增删改查
 * @Comment：最难的一次作业
 * @Date: 2023/12/1
 */
public interface SysRoleMapper {
    /**
     * 添加角色信息
     * role：角色数据
     * */
    void insert(SysRole role);

    /**
     * 修改角色信息
     * role：角色数据
     * */
    void update(SysRole role);

    /**
     * 删除角色信息
     * role：角色数据
     * */
    void delete(Long id);

    /**
     * 分页查询
     * role：角色数据
     * */
    Page<SysRole> findPage(String queryString);

    /**
     * 根据角色id查询角色信息
     * */
    SysRole findById(Long id);


    /**
     * 根据角色id删除对应的菜单信息
     * */
    void deleteMenuById(@Param("roleId") Long roleId);

    /**
     * 根据角色id删除对应的权限信息
     * */
    void deletePermissionById(@Param("roleId") Long roleId);


    /**
     * 添加角色与权限关系
     * roleId: 角色id
     * permissionId: 权限id
     * */
    void insertPermissions(@Param("roleId") Long roleId, @Param("permissionId") Long permissionId);

    /**
     * 添加角色与菜单关系
     * roleId: 角色id
     * menuId: 菜单id
     * */
    void insertMenus(@Param("roleId") Long roleId, @Param("menuId") Long menuId);

    /**
     * 根据角色名称查询是否存在角色信息
     * */
    SysRole findByLabel(String label);

    /**
     * 查询所有的角色信息
     * */
    List<SysRole> findAll();
}
